package com.demo;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Timer;
import java.util.TimerTask;

/**
 * 第一种：
 * 使用JDK自带的Timer类
 *
 * @author wangning
 * @date 2023/8/3 16:11
 * 优点：使用方便
 * 缺点：该类是单线程实现，如果任务执行时间太长或者发生异常，会影响其他任务的执行
 * Timer类有三种重载方法：
 * 1. schedule(TimerTask task,long delay) ：延迟 delay 毫秒再执行任务
 * 2. schedule(TimerTask task,Date time) ：在特定的 time 时间执行任务：
 * 3. schedule(TimerTask task,long delay,long period) ：延迟delay毫秒并每隔period毫秒执行一次
 */
public class TimerDemo {
    //定义时间格式
    private static final DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    public static void main(String[] args) {
        Timer timer = new Timer();
        //从当前时刻开始，每1s执行一次，单位为毫秒
        timer.schedule(new MyTask(), 0, 1000);
    }

    //自定义的、定时要执行的任务
    private static class MyTask extends TimerTask {
        @Override
        public void run() {
            LocalDateTime now = LocalDateTime.now();
            System.out.println("这是定时任务，时间是：" + pattern.format(now));
        }
    }

}
